home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
QRZ! Ham Radio 4
/
QRZ Ham Radio Callsign Database - Volume 4.iso
/
files
/
packet
/
misc
/
netconf.arc
/
A802.TXT
next >
Wrap
Text File
|
1988-12-10
|
36KB
|
724 lines
Fred R. Goldstein k1io
25 October 1988
Preface
This is a draft description of a potential protocol for providing
the Data Link Layer service to packet radio networks in the Amateur
Radio Service. This draft presumes a familiarity with the AX.25
protocol adopted by the American Radio Relay League. Actual
implementation is not suggested at this time.
Intended audience: Amateur packet radio operators. This draft is
leading towards an "ARFC".
The A802 Metropolitan Area Network Protocol for Amateur Packet Radio
I. Introduction
Amateur Packet Radio has been practically synonymous with the AX.25
protocol since the early 1980s. While AX.25 has allowed packet
operation to become quite popular, it has not proven to be fully
sufficient for the task. Instead, it has created a minor industry
in Terminal Node Controllers, which have isolated their users, and
their computers, from the protocols themselves.
A totally different protocol can take the place of AX.25, especially
when used with more sophisticated upper layers such as TCP/IP. A
candidate for such a protocol can be loosely based upon Local Area
Networks which operate over shared cable; A802 takes such an
approach.
I.1. AX.25 is itself a misnomer
AX.25 takes its name from Recommendation X.25 of the CCITT, the
international consultative body that makes standards for telephone
networks. X.25 itself is a definition for a standard interface into
packet switched networks. It defines, in detail, two different
layers of software. Layer 2 (or Level 2, in X.25's original
terminology) is the Data Link layer, responsible for ensuring error-
free transmission between adjacent entities. Layer 3 is the Network
layer (originally the Packet layer) which operates across the
boundaries of the network, establishing virtual circuits
(connections) between users. (Layer 1, the Physical Link layer,
simply transfers bits across a data connector, like the widely used
RS-232 interface. Modem standards fall within the bounds of Layer
1, but are not part of X.25. Packet radio standards for Layer 1 are
only partially covered within this document.)
X.25's Data Link layer uses a protocol called LAP-B (Link Access
Protocol - Balanced). This has been adapted, with much change, into
AX.25. While X.25's network layer has been implemented in some
connection-oriented networks, it is not part of AX.25. So the name
AX.25 is really a misnomer; it is simply a much modified LAP-B.
Like LAP-B, AX.25 is a member of the HDLC (High Level Data Link
Control) family of protocols. HDLC frames (which is the correct
term for packets at Layer 2) begin and end with a flag character,
and allow data transparency by a bit insertion (stuffing) procedure.
The last two bytes of the frame are the checksum, or cyclic
redundancy check (CRC). Bit stuffing (and removal, on receive) is
easily accomplished with specialized hardware, but next to
impossible using standard personal computer modem interfaces. Hence
the need for a TNC with its HDLC chip.
While X.25 is widely used, it really has little in common with
packet radio. For one thing, X.25 networks run over point to point
wire lines. And LAP-B doesn't worry about addressing (there are
only two stations on the wire, one at each end); lengthy address
strings were added to create AX.25.
II. The data link, the LAN and the MAN
Packet radio operators know that their networks are not derived from
X.25 wireline networks, as packet networks are often called Local
Area Networks (LANs). This is not strictly accurate, since a LAN
operates only within a building or campus, but packet radio MANs
(metropolitan area networks) are still a lot more like LANs than
like X.25 links. LAN protocols don't exactly follow the same
layered model as X.25 or LAP-B, either: They don't strictly map
into the traditional Layer 1 and Layer 2.
The most widely used LAN standards are defined by IEEE committee
802, and include 802.3 (based on Ethernet), 802.4 (token bus) and
802.5 (token ring). Since token-passing has not been successfully
demonstrated on packet radio, 802.3 comes closest to modeling radio.
Indeed, the name "Ethernet" was coined by its inventors who noted
that the coaxial cable was a broadcast medium not entirely unlike
radio. Alas, it is also quite different from radio: Not only does
it run much faster, but it is virtually lossless.
II.1 LAN layers
The lowest layer in a LAN, roughly within the physical link layer,
is called the Physical Medium Dependent (PMD) layer. This, of
course, differs greately between the different types of 802 LANs.
The PMD layer is concerned with how bits are transmitted. The next
layer up is the Medium Access Control (MAC) layer; this is where the
stations on the LAN address each other, and determine when they can
transmit. Finally, the Logical Link Control (LLC) layer provides
the same types of services as a Data Link layer. There are two LLCs
defined in IEEE 802.2; LLC1 provides a datagram service (like UI
frames), while LLC2 provides a virtual circuit service (like I
frames). LLC2 procedures (the types of frames and how they
interact) are very close to LAP-B.
II.2 The A802 protocols
The LAN protocols found in IEEE 802 provide a model for packet
radio. For the sake of discussion, these are herein called "A802";
the IEEE 802 protocols are merely an inspiration, but provide a
model, just as X.25's Layer 2 provided a model for AX.25.
A802 starts with a different premise than AX.25. It does not use
HDLC, so there is no bit stuffing, and ordinary PC asynchronous
communications hardware can be used. It also pays a bit less
attention to terseness -- LAP-B headers cram a lot into a few bytes,
but lack flexibility.
As a further note, A802 can be run in either asynchronous or
synchronous mode -- a low-end implementation can be sent using a
standard asynchronous modem port, and monitored without special
hardware. However, net throughput will be higher if synchronous
transmission is used, and the two modes are not compatible. Thus
any given transmission channel must be either synchronous or
asynchronous or some stations will not be able to contact others.
II.3 The A802 frame structure
An A802 frame takes the following format:
Frame {
Sync_characters Literal "^V"s Mandatory
MAC_header Structure Mandatory
LLC_header Structure Mandatory
Data String Optional
Frame_checksum 2 bytes Mandatory
}
The sync_character is not part of the A802 frame itself, but is
always transmitted at least twice before every frame. It has
the literal decimal value of 22, or control-V; its purpose is to
allow the receiving modem to establish synchronization. In
synchronous mode, it establishes both byte and frame
synchronization; in asynchronous mode, it only establishes frame
sychronization. Note that HDLC protocols such as AX.25 can send any
number of flag characters between frames; IEEE 802.3 precedes each
frame with a stream of alternating 1 and 0 bits for synchronization.
The A802 "header" consists of two separate sub-layers. The MAC
sublayer provides addressing functions, while the LLC sublayer
provides both connection-oriented and connectionless options.
AX.25's basic functions are still provided, including support for
digipeating.
II.4 The MAC layer
The Medium Access Control layer allows stations to address frames to
one another. It is possible for a connection-oriented protocol to
have a very small address field; instead of putting a full address
(typically here, a call sign) in each frame, a data link control
indicator (DLCI) refers to a previously-created connection. This
has been done in the pioneering VADGC (Vancouver) packet radio
protocols, and is done in both LAP-D (the ISDN follow-on to LAP-B)
and X.25's Network Layer, which are connection-oriented. Like
AX.25, however, A802 puts the source and destination addresses in
every frame, allowing them to be handled as datagrams. A802 also
supports digipeating.
The fundamental components of a MAC header are the sender's and
receiver's addresses. For example, Ethernet (and its follow-on IEEE
802.3) have a 48-bit address, so 96 bits of the MAC header are taken
up by addressing. But digipeating makes life more complicated!
Digipeating is more precisely referred to as source routed MAC
relay: Source routed because the path is specified by the source of
the packet, and MAC relay because the frame is simply relayed by the
intermediate stations without looking at layers above MAC. (Source
routing is supported in IEEE 802.5, the token ring LAN.)
The MAC header can be described as
MAC_header {
Hop_pointer Integer (Mandatory)
Destination_address Structure (Mandatory)
Intermediate_address_1..7 Structure (Optional)
Source_address Structure (Mandatory)
Protocol_discriminator Alpha (Mandatory)
}
II.4.1 Addresses
Each address field typically contains a call sign. In a simple two-
station connection, the sender of the packet puts its call sign in
the Source_address field and puts the other station's call in the
Destination_address field. Secondary station IDs can be appended to
the callsigns, as can portable identifiers, as the address is not
constrained to 8 bytes (unlike AX.25 Version 2.0).
II.4.2 Source routing
Digipeating is accomodated via the Intermediate_addresses and the
hop_pointer. The hop_pointer indicates which of the addresses
(destination or intermediate) the frame is being directed to. In a
two-station (no digipeater) packet, the Hop_pointer always has a
value of 1. If there is one digipeater, then it begins with a value
of 2; this means that the receiver recognizes the packet as its own
when its own address is in the Intermediate_address_1 position.
Likewise, if there are two digipeaters, the first digipeater
increments the hop_pointer to 3 so that the second digipeater
recognizes its address in the intermediate_address_2 position. And
the last digipeater sets the hop_pointer to 1, the position of the
destination address.
A multicast or broadcast frame is sent with the hop_pointer set to
0. Thus the hop_pointer can have any value from 0 to 8.
The hop_pointer is designed to reduce the processing load on
receivers; they only have to listen to see if the pointed-to address
is their own, and if it is not, then the frame can be ignore. The
most common value will be 1; when this occurs, receiving stations
may ignore subsequent addresses. (Conversely, when a frame has a
hop_pointer value of 8, then every digipeater that hears it must
wait until Intermediate_address_8 is sent. This is, of course, a
degenerate case, as it is highly unlikely that a chain of 8
digipeaters will work!
For identification purposes, the sender (as contrasted with the
originator) of each transmitted frame is identified by determining
the previous hop in the source routing chain.
II.4.3 The protocol discriminator
One final field in the MAC header is the protocol discriminator.
This allows the upper layers to know what type of protocol the A802
frame is carrying in its data field. It should be noted that in the
current Open Systems Interconnection Reference Model, protocol
discriminators are taboo -- different protocols at the same node
should be distinguished by different addresses. But AX.25 uses a
protocol discriminator, Ethernet (pre-802) uses a protocol
discriminator, and most TCP/IP users have grown to expect a protocol
discriminator. So A802 has one too. (This does not rule out using
distinctive addresses, if one chooses to do so.)
The protocol discriminator is a single upper-case letter (A-Z).
Tentatively values are as follows:
Letter Protocol type
I IP (as in TCP/IP)
R ARP (Address Resolution Protocol)
X X.25 Packet layer or OSI CONS (ISO 8208)
O OSI Internet Protocol (ISO 8473)
T Plain text
Other values will be assigned as required.
II.4.4. Parsing the MAC header
Since some of the header fields are of variable length, they must be
separated from one another. There are several techniques that could
be used for this. LAP-B uses only fixed-length fields, while AX.25
uses fixed-length addresses with a bit set to indicate whether or
not each has already been digipeated and another set to indicate
which address is the last. Some protocols (notably those used in
Open Systems Interconnection, the OSI program of the International
Organization for Standardization) use a tag-length-value technique,
which is very flexible but frequently takes at least 3 octets to do
anything.
A802 is a bit more like natural language -- it relies on taking each
byte's values in context. Individual fields can only have certain
values, so they end when a separator character, or one which cannot
be part of that field, occurs. In A802, the MAC header is encoded
using printable ASCII characters.
The first octet of the MAC header is always a numeral, in the range
0-9 (although value 9 is presently reserved). This hop_pointer is
followed by the destination_address. This can contain the
characters A-Z, 0-9, plus the hyphen "-" and slash "/". The
secondary station ID field, an AX.25 artifact whose value can be 0
through 15, can further be encoded using one ASCII character
representing a hexadecimal digit, in the ranges 0-9 plus a-f,
immediately following the call sign. Or a hyphen can be used,
noting that K1IO-10 and K1IOa are two different addresses, though
both represent the same ss_id. (Should these be equated? This
requires further study.) Terse format (K1IO3) is recommended.
Intermediate_address fields are optional, inserted only as required.
Each one begins with the ASCII character "v", and then encodes call
sign the same way as the destination_address.
The source_address field, using the same encoding technique, is
preceded by the ASCII character "<" (less than, or left-pointing
angle bracket). This character is equivalent to the Morse code
"DE".
II.4.5 Examples of MAC header addressing
A packet addressed to K1IO from 4X/WB2ZJQ1 without a digipeater:
1K1IO<4X/WB2ZJQ1
A packet addressed to FG0/K1IO/FS7-3 (K1IO operating portable on St.
Martin using an FG0 authorization and the informal suffix FS7, SSID
3) from KA9Q8 via digipeaters WB2ZJQ and NP4XYZ would be initiated:
2FG0/K1IO/FS7-3vWB2ZJQvNP4XYZ<KA9Q8
This would be picked up by WB2ZJQ would would transmit:
3FG0/K1IO/FS7-3vWB2ZJQvNP4XYZ<KA9Q8
and it would finally be transmitted to FG0/K1IO/FS7-3 from NP4XYZ:
1FG0/K1IO/FS7-3vWB2ZJQvNP4XYZ<KA9Q8
It is possible to identify the sender (not originator, but the
digipeater) of each packet, by following the process backwards!
This is not particulaly human-friendly, but unambiguous to a
computer. Note that the protocol discriminator is not shown above;
it is the byte immediately preceding the LLC separator ":" (colon).
II.5 The Logical Link Control header
Logical Link Control provides the rest of the protocol's functions.
A connection-oriented LLC (like IEEE 802's LLC2) provides an error-
corrected, sequenced stream of frames -- a virtual circuit. AX.25's
virtual circuit mode does the same thing; this is the usual way X.25
networks use LAP-B. A connectionless LLC (like IEEE 802's LLC1)
does not try to make up for losses in the physical medium, but it is
simpler and often adequate. This corresponds to UI frames in AX.25.
Two LLCs are defined in A802. LLC-U is essentially similar to LLC1,
providing an unsequenced datagram delivery service. LLC-C provides
a connection-oriented (sequenced) service similar to that provided
by LLC2. It does not, however, follow LLC2's specific procedures.
The A802 LLC header also helps provide the frame integrity. It
includes a frame length field and a header checksum. Since A802
does not follow the HDLC flag-delimiting technique or reserve any
characters for "end of packet", it needs a way to indicate the end
of a frame: The frame length field indicates how many bytes of data
are in the frame, so the receiver simply counts bytes to determine
the end of the frame. The header checksum decreases the chance
that an error in the address or frame length causes the rest of the
frame to be incorrectly framed, with the chance that an incorrect
frame checksum is accepted.
The LLC header takes this structure:
LLC_header {
Separator Lit. ":" Mandatory
Control Alphabetic Mandatory
Receive_sequence Alphabetic Optional
Transmit_sequence Alphabetic Optional
Length Integer Mandatory
Header_Checksum Integer Mandatory
}
Note that the Control, Receive_sequence and Transmit_sequence fields
will be described in Section III, below. All header fields up to
and including Transmit_sequence are encoded in printable ASCII
character; the remaining portion of the LLC header, and the rest of
the frame, may have any arbitrary value.
II.5.1 Length
A802 is a byte-count protocol. The length field is not encoded in
ASCII; it is a two-byte integer, with the high order byte followed
by the low order byte. This allows large frames, though many or
most frames will have a zero value in the high-order byte. The
length field counts the number of bytes in the data field, following
(not including) the header checksum.
Some frames do not contain a data field. In such a case the length
field remains, with a value of 0.
II.5.2 Header Checksum
The header checksum field is only intended to detect some number of
header errors. It is a simple, one-byte value computed by adding up
the binary value of every previous byte in the header plus the total
number of bytes in the header (not including the checksum). If the
checksum does not match when computed by the receiver, then the
frame is discarded. The receiver also does not have confidence in
the length field, and may lose frame synchronization (see below).
II.5.3 The data field
The whole point of this protocol is to exchange data; the header
simply facilitates it. The data field in A802 begins six bytes
after the separator (":") in I frames, four bytes after the
separator in U frames, and five bytes after the separator in S, G
and R frames. The maximum length of the data field is subject to
negotiations by the two parties, and should be restrained in order
not to "hog" a channel, but in a high-speed network can be as long
as 8191 bytes. (This value is for further study.) On a 1200 bps
half-duplex channel, however, a maximum of 256 bytes is recommended.
There are no constraints on the contents of the data field, except
that it must be an integral number of octets long. Segmentation of
packets to accomodate different maximum data field lengths is for
further study.
II.5.4 The frame checksum
At the end of every frame, following the data field (and not
included within the length field) is the frame checksum. This is
computed on the entire frame, beginning with the hop pointer and
ending with the last byte before the frame checksum.
The frame checksum uses the 16-bit CRC-CCITT cyclic redundancy
checksum, identical with the one in AX.25. While computationally
rather intensive, it will detect essentially all errors of fewer
than sixteen bits and most longer errors. (Since A802 is intended
for use in the absence of dedicated "TNC" hardware, which would
normally implement CRC in hardware, use of a different checksum is
for further study.)
III. LLC procedures
III.1 LLC-U operation: Connectionless
The A802 connectionless mode of operation has a very simple LLC
sublayer. The Control field has a value of "U", corresponding to
Unnumbered Information (UI) frames in AX.25. All such frames stand
alone. They do not have a receive_sequence or transmit_sequence.
Thus the LLC-U header begins with the separator ":", followed
immediately by the Length field and Checksum. If the frame checksum
(as well as the header checksum) is valid, then the data is passed
to the next layer up. If the checksum is invalid, then the data is
not passed.
III.2 LLC-C operation: Connection oriented
A connection-oriented Logical Link Control provides sequenced,
error-corrected packets. This isn't so simple: If a packet isn't
acknowledged, it must be retransmitted by the sender. And since it
might take some time for this to occur, the sender may wish to send
more than one packet at a time. This is called a window, and is a
feature of both AX.25, LAP-B and many higher layer protocols.
A802's LLC-C defines three phases of data communications:
Connection establishment, data exchange, and connection release.
Connection establishment uses a three-way handshake (unlike AX.25's
two-way handshake). Connection release uses a two-way handshake
(more like AX.25). Each step can be described as a change in the
connection state. These stages are initiated by values in the
Control field.
III.2.1 Connection establishment
A802's connection establishment begins with the connection in a null
state. The station which initiates the connection sends a frame
with the Control field set to "A" ("ask for connection"). That
station moves into the connection initiated state. The recipient
station, if it chooses to accept the request, immediately responds
with the Control field set to "B" ("begin to connect"). Neither A
nor B frames may contain data. (A802 does not support "fast
connect". You want fast, you use U frames!) The recipient, who
sent the "B", is now in the connection pending state.
If the receiver does not want to accept a connection request, then
it responds not with a "B" but with a No Contact frame (Control
value of "N"). The receiver stays in the null state.
After receiving a "B" frame, the initiator sends a Connect frame
(Control value of "C"). This step allows the recipient of the
connect request to know that its "B" frame was received. Upon
sending the C frame, the initiator moves into connected state; the
receiver moves into connected state when it receives the C frame.
As you can see, connection establishment is as simple as A-B-C! But
of course, there are complications, mainly a number of necessary
timers. When the initiator moves into the connection initiated
state, it starts Timer A to await a response. If Timer A expires
without any response, then the connection is assumed to have failed.
It may re-initiate with another A frame.
Once the recipient sends a B frame, it starts Timer B. If it does
not receive a C frame before Timer B expires, then it retransmits
the B frame once and restarts Timer B. If no C frame is received,
then it assumes that the connection is lost and returns to the null
state. If the C frame was lost, the originator will not know it
until another B frame is received. It may have begun transmitting I
frames in the meantime, but I frames must be acknowledged, and the
receipt of a second B frame implies that the I frames have been
rejected. Similarly, I frames received before a C frame are
discarded by the receiver as being out of sequence.
III.2.2 Data exchange
Once a connected state is achieved, data exchange may begin. A802's
connected mode makes use of sliding windows, not unlike AX.25. But
in keeping with A802's alphabetic nature, it adopts a modulus of 26;
letters are used to indicate the send and receive variables.
The receive_sequence is encoded using lower-case ASCII letters; the
transmit_sequence is encoded in upper case. During information
exchange, the receive_sequence is transmitted in I, S and G frames;
it has the downcased version of the next letter (a-z, wrapping z to
a) after the last correctly-received frame's transmit_sequence. The
transmit sequence (A-Z, wrapped) identifies each unique sequenced
frame.
Thus the first station to transmit information after connection
establishment sends the I frame with sequence variables "IaA",
inviting the other side to send its own frame A. If side X has
received five frames frpm side Y and not transmitted any, then sends
one frame, it sends "IeA". If X has a second frame to transmit
right away, that frame is sequenced "IeB". Then, if Y sends its
sixth frame, it sends IcF, which acknowledges X's frame B.
In theory this allows up to (modulus - 1) 25 frames to be
outstanding at once. This window size value k is typically much
lower; in some half-duplex packet radio environments, it may need to
be as low as 1, whence every frame must be acknowledged before
another can be sent. Windows belong to the transmitting side only
and need not be symmetrical; a station simply doesn't transmit more
than k frames ahead of the last acknowledged frame.
Every I frame must be acknowledged within the duration of the
sender's timer I. If there is a relatively constant flow of data in
both directions, then each side's I frames acknowledge the other
side's. If, however, the recipient does not have data to send, then
it still needs to acknowledge the received data before the sender's
timer I expires. This is accomplished by sending a G (Go) frame
with the appropriate receive sequence_value (the transmit_sequence
value one after that of the last received I frame). Timer G
determines how long the recipient waits before sending this G frame.
If a frame is not acknowledged within timer I, then the station
retransmits the frame. If a station retransmits the same frame
r times without being acknowledged, then it assumes that the
connection has been lost. It then transmits a D frame.
III.2.3 Flow control
Sometimes one side of a connection is incapable of handling any
additional I frames. This may occur because of congestion further
down the network, or because its receiver has filled (or anticipates
imminently running out of) its buffers. When a station expects to
be unable to handle additional traffic, it sends an S (Stop) frame.
This contains a receive sequence value but not a transmit sequence.
The sender of the S frame is now in a stopped state. Any I frame
data received at this time is expected be discarded. (U frames may
be accepted or rejected at the recipient's option.) Upon receipt of
an S frame, the sender enters halted state.
A station in halted state may not send further I frames, but may
itself acknowledge receipt of I frames via S frames. A station in
stopped state may, however, send I frames.
Once the station is again able to receive traffic, it sends a G
frame, moving from stopped to connected state. Its receive_sequence
value should be the next one after that of the last I frame and
match the one in the S frame which it cancels; however, at the
receiver, value of the G frame takes precedence in case of mismatch.
(This allows the receiver to accept additional I frames after
sending an S frame, at its discression. S and G frames correspond
loosely to RNR and RR frames in AX.25 and LAP-B.)
III.2.4 Out of sequence packets
If a valid frame is received whose transmit sequence is not exactly
one more (modulo 26 from the A-Z sequence) than the last correctly
received frame, then it is out of sequence. A802 is intended to
operate only over simple point to point links, or over static
digipeater chains, so sequence should always be preserved. Thus out
of order packets imply that intervening packets have been lost. The
recipient of an out of sequence frame should send an R frame with
the receive_sequence value one greater than the correctly received
frame's transmit_sequence.
III.2.5 Connection release
When either side of a connection wishes to release the connection,
it sends a D (Disconnect request) frame. This contains a
receive_sequence value one ahead of the last correctly received
frame's transmit_sequence. It goes into the disconnect pending
state. The recipient of a D frame immediately acknowledges it with
an E (End) frame, which has no associated sequence variables. At
this point both stations go into the disconnected mode.
If the sender of the D frame does not receive an E frame within the
time specified by timer A, then it should retransmit the D frame up
to r times.
III.3 Header checksum errors
For every received frame, the header checksum should be computed and
compared to the received value. If it is incorrect, then the frame
is simply discarded.
Since the number of bytes in the frame is part of the header
checksum, the receiver must resynchronize. This is accomplished by
waiting for two successive bytes with the decimal value of 22
(control-V) followed immediately by an ASCII representation of a
numeric value, which could represent the first byte of a frame.
This may or may not mark the beginning of a new frame. The receiver
must then see if the potential new frame has a valid header
checksum. Other heuristic means of determining frame breaks are for
further study. Frame synchronization can typically be re-attained
from the beginning of a new transmission, as noted from the Data
Carrier Detect signal or squelch signal.
III.4 Frame checksum errors
If the frame checksum of any frame but an I frame is correct but the
frame checksum is incorrect, then the receiver discards the frame.
If the header checksum of an I frame is correct but the frame
checksum is incorrect, then the receiver can have a fair degree of
confidence that the frame in question comes from the sender
identified in the MAC header, even if the data itself is valid. If
the recipient of this corrupted data field has data to transmit,
then it sends an I frame with the receive sequence value of the next
anticipated frame following the last received valid frame. For
example, if frame M was received correctly and a corrupt frame N was
then received, the receiver's next outgoing I frame should have a
receive sequence of "n". The transmitter then resumes from its
frame N.
If the recipient of the corrupted data does not have data to
transmit, it should, without further waiting, send an R (Reject)
frame with its receive_sequence value one after the last valid
received frame's transmit_sequence value. (This will typically be
the transmit sequence of the corrupt frame, but that may not be the
case if other frames were lost.)
III.5 Channel Access Procedures
Packet radio does not exactly resemble any wireline medium.
Different packet radio configurations, in turn, have different
physical characteristics which impact procedures.
The purpose of the channel access procedures is to guarantee that a
shared channel does not reach a state where additional demand causes
net throughput to decrease precipitously, a condition known as
congestion collapse. This has been a significant problem in AX.25
networks. It is essentially impossible, however, in properly
operated Ethernet networks.
III.5.1 CSMA operation
If it were not for the "hidden transmitter" problem, packet radio
half-duplex operation would resemble carrier sense multiple access
operation. CSMA operation can, however, be achieved when half-
duplex packet stations operate through a repeater (a two-frequency
repeater, not a digipeater). The repeater regenerates everyone's
transmitted bits so that everyone else can hear them; this prevents
any station from transmitting on top of another station unless they
both start transmitting at almost exactly the same time.
In CSMA operation, an A802 station with data to transmit first waits
until the channel is free. It then waits for a random period of
time t in the range m < t < s, where s is the slot time. Slot time
is represented by TXdelay + Df: The sum of the transmitter keyup
delay (TXdelay in some packet radio TNC operation) added to a
constant Df. (Ideally, in a system where TXdelay is not long, Df
represents the duration of a minimum-length frame; initially here,
it should be at least equal to TXdelay, so that slot time is at
least twice TXdelay. This value requries further study.) The
minimum wait, m, is equal to TXdelay.
On retransmissions, however, slot time increase exponentially:
TXdelay + (Df*(2^t)), where t is the retransmission number
beginning with 0 (for the first transmission) and ending with r.
Thus each retransmission delay will take, on average, almost twice
as long as the previous delay. But this is only the outer bound of
a random function.
III.5.2 CSMA/CD operation
IEEE 802.3 and Ethernet use a contention technique called carrier
sense multiple access / collision detection, or CSMA/CD. This is
based on the concept that every transmitting station is
simultaneously listening, so it knows if its signal was "clobbered"
-- it compares the received signal to the transmitted one.
(Ethernet, keeping it simple, uses a current source into a fixed 50
ohm load. If the voltage goes above the transmitter's own output
voltage -- i.e., it detects 6 v when it transmits at 3 v -- then it
knows a collision has occurred. This obviously does not work when
an antenna is used.)
Stations must listen before they transmit. However, it is possible
that two stations choose to transmit at almost exactly the same
time. This causes a collision. Since the station is listening,
though, it does not complete sending the packet. It stops
transmitting and waits a random interval within (2^n * slot_time),
where n is the retransmission count.
This leads to a conclusion that, given sufficient received signal
strengths (i.e., low bit error rate exclusive of collision), LLC-U
operation is appropriate for CSMA/CD operation, while LLC-C
operation is most desirable for CSMA operation. If CSMA operation
is used, then a collision-caused error can only be recovered by an
end-to-end layer, either operating across a digipeater chain or at a
higher layer.
From a practical perspective, CSMA/CD operation requires all
stations to operate using full-duplex radios, listening to a
repeater output even as they transmit to the input. Hence very
little amateur packet radio operation is true CSMA/CD.
III.5.3 Single-frequency operation
With a single frequency and no repeater, even true CSMA is not
possible. Stations must still listen before transmitting, but the
sender might not hear a third station that blocks its transmission
from reaching the receiver. This is the "hidden transmitter"
problem. Single-frequency operation thus has a lower maximum
channel throughput than true CSMA operation, though higher than
Aloha operation, in which stations transmit without listening.
The same procedures as used in CSMA operation should be used in
single-frequency operation. However, it may be necessary to use
longer initial slot times. This is for further study.